package com.example.service;

import com.example.common.PageResult;
import com.example.common.Result;
import com.example.dto.MerchantInventoryQueryDTO;
import com.example.vo.MerchantInventoryRecordVO;

import java.util.List;

/**
 * 商家库存管理Service接口
 */
public interface MerchantInventoryService {

    /**
     * 分页查询商家库存记录
     */
    Result<PageResult<MerchantInventoryRecordVO>> getRecordsPage(MerchantInventoryQueryDTO queryDTO);

    /**
     * 根据商家ID查询库存记录
     */
    Result<List<MerchantInventoryRecordVO>> getRecordsByMerchantId(Long merchantId);

    /**
     * 查询入库记录（从管理员进货）
     */
    Result<PageResult<MerchantInventoryRecordVO>> getInRecordsPage(MerchantInventoryQueryDTO queryDTO);

    /**
     * 查询出库记录（销售给客户）
     */
    Result<PageResult<MerchantInventoryRecordVO>> getOutRecordsPage(MerchantInventoryQueryDTO queryDTO);

    /**
     * 创建进货入库记录
     * 当商家从管理员进货时调用
     */
    Result<Void> createPurchaseInRecord(Long merchantId, Long productId, Long storeProductId, 
                                       Integer quantity, String remark);

    /**
     * 创建销售出库记录
     * 当商家销售商品给客户时调用
     */
    Result<Void> createSaleOutRecord(Long merchantId, Long productId, Long storeProductId, 
                                    Long customerId, Integer quantity, Long orderId, String remark);

    /**
     * 库存调整记录
     * 当商家调整库存时调用
     */
    Result<Void> createAdjustRecord(Long merchantId, Long productId, Long storeProductId, 
                                   Integer quantity, String recordType, String remark);

    /**
     * 退货入库记录
     * 当客户退货时调用
     */
    Result<Void> createReturnInRecord(Long merchantId, Long productId, Long storeProductId, 
                                     Long customerId, Integer quantity, Long orderId, String remark);

    /**
     * 导出库存记录
     */
    Result<List<MerchantInventoryRecordVO>> exportRecords(MerchantInventoryQueryDTO queryDTO);

    /**
     * 获取商家库存统计信息
     */
    Result<Object> getMerchantInventoryStatistics(Long merchantId, String startTime, String endTime);
} 